<?php
/** .-------------------------------------------------------------------
 * |  Software: [HDPHP framework]
 * |      Site: www.hdphp.com  www.hdcms.com
 * |-------------------------------------------------------------------
 * |    Author: 向军 <2300071698@qq.com>
 * |    WeChat: aihoudun
 * | Copyright (c) 2012-2019, www.houdunwang.com. All Rights Reserved.
 * '-------------------------------------------------------------------*/

namespace app\home\controller;

use system\model\Article;
use \system\model\Module;
use houdunwang\request\Request;

class Entry
{
	protected $template;

	public function __construct()
	{

		 //  这里是判断  是手机端还是 网易端

		//                             这边是配伪静态  IS_MOBILE
		$this->template = 'template/' . (IS_MOBILE ? 'mobile' : 'web') . '/' . v('config.template');

//		p($this->template);

		//定义模板的路径常量  __TRMPLATE__ 让__TRMPLATE__ ==  this->template

		define(__TEMPLATE__,__ROOT__.'/' . $this->template);

//1. 运行模块
		 $this->runModule();

	}

	/**
	 * @return mixed
	 *    这是引入网站的首页
	 */
	public function index()
	{
		$headConf = [
			'title'=>'首页',
			'css'=>['index'],
		];

		//加载 首页 页面
		return view($this->template . '/index.html',compact('headConf'));

	}
	/**
	 * 栏目页面
	 */

	public function category()
	{
		$headConf = [
			'title'=>'列表页',
			'css'=>['list_article'],
		];

		//zhao到对应的cate_id 栏目主键
		$cate_id = Request::get('cate_cid');
		//  在template 里加载对应的 list页面

		return view($this->template . '/list.html',compact('headConf'));
	}


	/**
	 *
	 * 文章内容
	 */

	public function content ()
	{
		$arc_id = Request::get( 'arc_id' );

		//找对应数据
		$cms_field = Article::find( $arc_id );
		$headConf = [
			'title'=>$cms_field['arc_title'],
			'css'=>['page'],
		];
		//点击次数自增1
		Db::table("article")->where('arc_id',$arc_id)->increment('arc_click',1);

		return view( $this->template . '/view.html' , compact( 'headConf','cms_field' ) );
	}


	/**
	 * 运行模块
	 */

	protected function runModule()
	{
//1.1
		//这是参考地址  http://zbq.weian-weijue.com/weixincms/index.php?m=pic&action=controller/index/add

		// 以下所有步骤都是来 执行这个→   ( new \addons\pic\controller\Index())->add();


		$m = Request::get('m');
//		p($m); 结果是pic    M就是模块

		//1.8 为了考虑 ，考虑模块如果不存在，那么肯定实例化不到  所以下面if判断力要增加一个判断

		//??    module_name 英文表示
		// 这边就是在数据库中  拿$m和数据库对比 找到其对应的模块。
		$module = Module::where('module_name',$m)->first();


//1.2  // 获取方法名、存入到action里
		$action = Request::get('action');

//		p($action); controller/index/add   是方法哪里的什么方法.

		//1.3 当上面两个参数 m  和 action 同时存在时  就确定你访问的是模块
		if ($module && $m && $action) {
			//1.4
			// controller/index/add 把这个地址转成数组
			$info = explode('/', $action);

//			p($info);
//			Array
//			(
//				[0] => controller
//				[1] => index
//				[2] => add
//			)
//module 是模型  写方法的哦！  resource 是模板

			//1.9 这里要对 1.5进行修改

			//??  当module_is_system 判断是 不是系统模块 后面链接上  $m 就是上面获取的M    在链接上控制器  然后在加参数 $info请看下面
			$class = ($module['module_is_system']==1 ? 'module' :'addons') . "\\".$m .'\\' . $info[0] .'\\' . ucfirst( $info[ 1 ]) ;

			//1.6   取得下标2的值 就是控制器的参数  就是找控制器的参数
			//Array
//			(
//				[0] => controller
//				[1] => index
//				[2] => add
//			)
			return die(call_user_func_array([new $class ,$info[2]],[]));
		}
	}


}






































